//------------------------------------------------------------------------------
// The contents of this file are subject to the nopCommerce Public License Version 1.0 ("License"); you may not use this file except in compliance with the License.
// You may obtain a copy of the License at  http://www.nopCommerce.com/License.aspx. 
// 
// Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. 
// See the License for the specific language governing rights and limitations under the License.
// 
// The Original Code is nopCommerce.
// The Initial Developer of the Original Code is NopSolutions.
// All Rights Reserved.
// 
// Contributor(s): _______. 
//------------------------------------------------------------------------------

using System;
using System.Web.UI;
using NopSolutions.NopCommerce.BusinessLogic.Infrastructure;
using NopSolutions.NopCommerce.BusinessLogic.Model;
using NopSolutions.NopCommerce.BusinessLogic.SEO;
using NopSolutions.NopCommerce.BusinessLogic.Services;
using NopSolutions.NopCommerce.Common.Utils;

namespace NopSolutions.NopCommerce.Web.Modules
{
    public partial class ProductReviews : BaseNopFrontendUserControl
    {
        private readonly IProductService _productService;
        private readonly ICustomerService _customerService;

        public ProductReviews() {
            _productService = IoC.Resolve<IProductService>();
            _customerService = IoC.Resolve<ICustomerService>();
        }

        protected override void OnInit(EventArgs e) {
            base.OnInit(e);

            Load += new EventHandler(ProductReviews_Load);
        }

        void ProductReviews_Load(object sender, EventArgs e) {
            BindData();
        }

        protected void BindData() {
            var product = _productService.GetProductById(this.ProductId);
            if (product != null && product.AllowCustomerReviews) {
                pnlReviews.Visible = true;
                var productReviews = product.ProductReviews;
                if (productReviews.Count > 0) {
                    pnlReviews.Visible = true;
                    rptrProductReviews.DataSource = productReviews;
                    rptrProductReviews.DataBind();
                }
                else {
                    pnlReviews.Visible = false;
                }
            }
            else
                this.Visible = false;
        }

        protected string GetCustomerInfo(int customerId) {
            string customerInfo = string.Empty;
            var customer = this.CustomerService.GetCustomerById(customerId);
            if (customer != null) {
                customerInfo = customer.FormatUserName();
            }
            else {
                customerInfo = "Not registered";
            }
            return customerInfo;
        }

        public int ProductId { get { return CommonHelper.RouteStringInt("productId"); } }
        public Product Product { get { return _productService.GetProductById(ProductId); } }
    }
}